import org.apache.spark.sql.{SaveMode, SparkSession}

// 定义装修情况变量，并去除null值
object Decoration {
  def main(args: Array[String]): Unit = {
    val spark = SparkSession.builder()
      .appName("HouseDataAnalysis")
      .master("local[*]") // 使用本地模式，[*] 表示使用所有可用的核心
      .getOrCreate()

    // 读取 CSV 文件
    val df = spark.read.option("header", true).csv("hdfs://192.168.2.99:9000/sh_data.csv") // 读取数据

    // 定义装修情况变量，并去除null值
    val decorationDF = df.select("decoration").na.drop("any").groupBy("decoration").count()
    decorationDF.show()


    // 将结果存入数据库
    val url = "jdbc:mysql://192.168.2.99:3306/house"
    val user = "root"
    val password = "root"

    decorationDF.write
      .mode(SaveMode.Overwrite) // 如果表已经存在，覆盖写入
      .jdbc(url, "decoration", new java.util.Properties() {
        {
          put("user", user)
          put("password", password)
        }
      })

    // 停止 SparkSession
    spark.stop()
  }
}
